package com.feri.api.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.feri.api.dao.GoodsappraiseDao;

import com.feri.api.dto.GSAddDto;
import com.feri.api.dto.GSPageDto;
import com.feri.api.service.intf.GoodsappraiseService;
import com.feri.api.util.TokenUtil;
import com.feri.api.vo.PageVo;
import com.feri.api.vo.R;
import com.feri.common.entity.Goodsappraise;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author: 学习强国
 * @Date: 2022/10/02 13:26:55
 */
@Service
public class GoodsappraiseServiceImpl implements GoodsappraiseService {
    @Resource
    private GoodsappraiseDao dao;

    @Override
    public R save(GSAddDto obj, String token) {
        if (obj != null) {
            Long aLong = TokenUtil.toLong(token);
            if (aLong>0l){
                Goodsappraise goodsappraise = new Goodsappraise(aLong, obj.getGid(), obj.getType(), obj.getInfo());
                if (dao.insert(goodsappraise) > 0) {
                    return R.ok();
                }
            }
        }
        return R.fail();
    }


    @Override
    public R queryAll() {
        return R.ok(dao.selectList(null));
    }

    @Override
    public R queryPage(GSPageDto dto) {
        if (dto!=null){
            QueryWrapper<Goodsappraise> goodsappraiseQueryWrapper = new QueryWrapper<>();
            if (dto.getType()>=1&&dto.getType()<=5){
                goodsappraiseQueryWrapper.orderByDesc("ctime").eq("type",dto.getType())
                        .eq("gid",dto.getGid());
            }else {
                goodsappraiseQueryWrapper.orderByDesc("ctime")
                        .eq("gid",dto.getGid());
            }

            Page<Goodsappraise> page=dao.selectPage((new Page<>(dto.getPage(),dto.getSize())),goodsappraiseQueryWrapper);
            return R.ok(new PageVo<Goodsappraise>(page.getTotal(),page.getPages(),page.getRecords()));
        }
        return R.fail();
    }
}